﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLVT.DAO;
using QLVT.Entity;

namespace QLVT.UI
{
    public partial class UcNhanVien : UserControl
    {
        bool add = false;

        public UcNhanVien()
        {
            InitializeComponent();
        }

        private void UcNhanVien_Load(object sender, EventArgs e)
        {

            NhanVienDAO nhanVienDAO = new NhanVienDAO();
            DataSet ds = nhanVienDAO.GetAll();
            DataGridViewTextBoxColumn columnMaNV = new DataGridViewTextBoxColumn();
            columnMaNV.HeaderText = "Mã Nhân Viên";
            columnMaNV.DataPropertyName = "manv";
            dataGridViewNhanVien.Columns.Add(columnMaNV);
            DataGridViewTextBoxColumn columnHolot = new DataGridViewTextBoxColumn();
            columnHolot.HeaderText = "Họ lót";
            columnHolot.DataPropertyName = "holot";
            dataGridViewNhanVien.Columns.Add(columnHolot);
            DataGridViewTextBoxColumn columnTenNV = new DataGridViewTextBoxColumn();
            columnTenNV.HeaderText = "Tên nhân viên";
            columnTenNV.DataPropertyName = "tennv";
            dataGridViewNhanVien.Columns.Add(columnTenNV);
            DataGridViewTextBoxColumn columnPhone = new DataGridViewTextBoxColumn();
            columnPhone.HeaderText = "Số điện thoại";
            columnPhone.DataPropertyName = "sdt";
            dataGridViewNhanVien.Columns.Add(columnPhone);
            DataGridViewTextBoxColumn columnNgaySinh = new DataGridViewTextBoxColumn();
            columnNgaySinh.HeaderText = "Ngày sinh";
            columnNgaySinh.DataPropertyName = "ngaysinh";
            dataGridViewNhanVien.Columns.Add(columnNgaySinh);
            DataGridViewTextBoxColumn columnGioiTinh = new DataGridViewTextBoxColumn();
            columnGioiTinh.HeaderText = "Giới tính";
            columnGioiTinh.DataPropertyName = "gioitinh";
            dataGridViewNhanVien.Columns.Add(columnGioiTinh);
            DataGridViewTextBoxColumn columnSoCMND = new DataGridViewTextBoxColumn();
            columnSoCMND.HeaderText = "Số cmnd";
            columnSoCMND.DataPropertyName = "socmnd";
            dataGridViewNhanVien.Columns.Add(columnSoCMND);
            DataGridViewTextBoxColumn columnNgayVaoLam = new DataGridViewTextBoxColumn();
            columnNgayVaoLam.HeaderText = "Ngày vào làm";
            columnNgayVaoLam.DataPropertyName = "ngayvaolam";
            dataGridViewNhanVien.Columns.Add(columnNgayVaoLam);
            DataGridViewTextBoxColumn columnLuong = new DataGridViewTextBoxColumn();
            columnLuong.HeaderText = "Lương";
            columnLuong.DataPropertyName = "luong";
            dataGridViewNhanVien.Columns.Add(columnLuong);
            dataGridViewNhanVien.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            dataGridViewNhanVien.DataSource = ds.Tables[0];
        }

        private void dataGridViewNhanVien_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewRow rowSelect = dataGridViewNhanVien.SelectedRows[0];
            NhanVienDAO nhanVienDao = new NhanVienDAO();
            NhanVien nhanvien = nhanVienDao.GetBymanv(rowSelect.Cells[0].Value.ToString());
            if (nhanvien != null)
            {
                BinddingData(nhanvien);
            }
            if (add)
            {
                add = false;
                toolStripButtonOk.Visible = false;
                toolStripButtonAdd.Visible = true;
            }
        }

        public void BinddingData(NhanVien nhanVien)
        {
            txtMaNV.Text = nhanVien.Manv;
            txtHoLot.Text = nhanVien.Holot;
            txtTenNV.Text = nhanVien.Tennv;
            txtSDT.Text = nhanVien.Std;
            txtLuong.Text = nhanVien.Luong.ToString();
            dateTimePickerNgaySinh.Value = nhanVien.Ngaysinh;
            dateTimePickeNVL.Value = nhanVien.NgayVaoLam;
            txtSCMND.Text = nhanVien.Socmnd;
        }

        private void toolStripButtonDelete_Click(object sender, EventArgs e)
        {
            String manv = txtMaNV.Text;
            if (manv.Length != 0)
            {
                NhanVienDAO nhanVienDAO = new NhanVienDAO();
                if (!nhanVienDAO.DeleteBymanv(manv))
                {
                    MessageBox.Show("Không xóa được nhân viên", "Error Sytem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    DataSet ds = nhanVienDAO.GetAll();
                    dataGridViewNhanVien.DataSource = ds.Tables[0];
                    if (ds.Tables[0].Rows.Count != 0)
                    {
                        BinddingData(nhanVienDAO.GetBymanv(dataGridViewNhanVien.Rows[0].Cells[0].Value.ToString()));
                    }
                }
            }
        }

        public NhanVien getData()
        {
            NhanVien nhanVien = null;
            try
            {
                nhanVien = new NhanVien();
                nhanVien.Manv = txtMaNV.Text;
                nhanVien.Holot = txtHoLot.Text;
                nhanVien.Tennv = txtTenNV.Text;
                nhanVien.Std = txtSDT.Text;
                nhanVien.Ngaysinh = dateTimePickerNgaySinh.Value;
                nhanVien.GioiTinh = comboBoxGT.SelectedIndex == 0 ? true : false;
                nhanVien.Socmnd = txtSCMND.Text;
                nhanVien.NgayVaoLam = dateTimePickeNVL.Value;
                nhanVien.Luong = float.Parse(txtLuong.Text);
                return nhanVien;
            }
            catch (Exception ex)
            {
                return null;   
            }
        }
        private void toolStripButtonEdit_Click(object sender, EventArgs e)
        {
            NhanVien nhanVien = getData();
            if (nhanVien != null)
            {
                NhanVienDAO nhanVienDAO = new NhanVienDAO();
                if (!nhanVienDAO.UpdateBymanv(nhanVien))
                {
                    MessageBox.Show("Không cập nhật được nhân viên", "Error Sytem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    DataSet ds = nhanVienDAO.GetAll();
                    dataGridViewNhanVien.DataSource = ds.Tables[0];
                    if (ds.Tables[0].Rows.Count != 0)
                    {
                        BinddingData(nhanVienDAO.GetBymanv(dataGridViewNhanVien.Rows[0].Cells[0].Value.ToString()));
                    }
                }
            }
        }

        private void toolStripButtonAdd_Click(object sender, EventArgs e)
        {
            if (!add)
            {
                toolStripButtonOk.Visible = true;
                add = true;
                toolStripButtonAdd.Visible = false;
                txtMaNV.Text = null;
                txtHoLot.Text = null;
                txtTenNV.Text = null;
                txtSDT.Text = null;
                txtLuong.Text = null;
                dateTimePickerNgaySinh.Value = DateTime.Today;
                dateTimePickeNVL.Value = DateTime.Today;
                txtSCMND.Text = null;
            }
        }

        private void toolStripButtonOk_Click(object sender, EventArgs e)
        {
            if (add)
            {
                add = false;
                toolStripButtonOk.Visible = false;
                toolStripButtonAdd.Visible = true;
                NhanVien nhanVien = getData();
                if (nhanVien != null)
                {
                    NhanVienDAO nhanVienDAO = new NhanVienDAO();
                    if (!nhanVienDAO.Insert(nhanVien))
                    {
                        MessageBox.Show("Không tạo thêm được nhân viên", "Error Sytem", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        DataSet ds = nhanVienDAO.GetAll();
                        dataGridViewNhanVien.DataSource = ds.Tables[0];
                        if (ds.Tables[0].Rows.Count != 0)
                        {
                            BinddingData(nhanVienDAO.GetBymanv(dataGridViewNhanVien.Rows[0].Cells[0].Value.ToString()));
                        }
                    }
                }
            }
            }
        }
}
